from fastapi import APIRouter, Body
import typing as T

from ..dto.Result import Result
from ..service.imp.EmpsServiceImp import EmpService

router = APIRouter(prefix="/login", tags=["登录相关接口"])


@router.post("", response_model=Result)
async def login(
    username: T.Annotated[str, Body(description="用户名")],
    password: T.Annotated[str, Body(description="密码")],
    empService: EmpService,
):
    """
     # 登录接口

    ## 接口描述
    该接口用于根据username和password验证登录，并返回一个标准化的`Result`对象。

    ## 请求方法
    - **HTTP方法**: POST
    - **路径**: `/login`

    ## 参数说明
    - **username**:
      - 类型: `string`
      - 描述: 用户名
    - **password**:
      - 类型: `string`
      - 描述: 密码

    ## 返回值
    - **类型**: [`Result`](file://app/dto/Result.py)
    - **字段说明**:
      - `code`: 状态码，表示请求的结果状态。
      - `msg`: 消息，描述请求的结果。
      - `data`: 如果验证成功则发送jwt令牌，否则则返回错误的状态码。

    ## 示例返回值
    ```json
    {
      "code": 1,
      "msg": "success",
      "data": ...
    }
    """
    result = await empService.login(username, password)
    return (
        Result.success(result)
        if result is not None
        else Result.error("用户名或密码错误")
    )
